// 对于axios进行二次封装
import axios from 'axios';

// 引入进度条
import nprogress from 'nprogress'; // start: 进度条开始, done: 进度条结束
//引入进度条样式
import 'nprogress/nprogress.css';

// 利用axios对象方法 create, 去创建一个axios实例
const requests = axios.create({
  // 配置对象
  baseURL: '/mock', // 基础路径, 发请求的时候, 路径当中会出现api

  // 代表请求超时的时间为5s
  timeout: 5000,
});

// 请求拦截器: 在发请求之前, 请求拦截器可以检测到, 可以在请求发出去之前做一些事情
requests.interceptors.request.use(config => {
  // 进度条开始
  nprogress.start();
  return config;
});

// 响应拦截器:
requests.interceptors.response.use(
  // 成功的回调函数: 服务器响应数据回来以后, 响应拦截器可以检测到, 可以做一些事情
  res => {
    nprogress.done();
    return res.data;
  },

  // 响应失败的回调函数
  error => Promise.reject(new Error('错误'))
);

// 对外暴露
export default requests;
